package com.dysoft.flesh;

import java.util.Collection;

/**
 * @author Sean Micklethwaite
 *         Aug 14, 2010 8:59:17 PM
 */
public interface Shader extends RenderComponent {
	Collection<? extends Uniform<?>> getUniforms();

	enum Type {
		VERTEX_SHADER, FRAGMENT_SHADER, GEOMETRY_SHADER
	}

	Uniform<Integer> uniform(String name, int val);
	Uniform<Float> uniform(String name, float val);
	Uniform<Float []> uniform(String name, Float [] val);

	Component getComponent(Type type);

	interface Uniform<T> {
		T getVal();
		void setVal(T val);
		String getName();
	}

	interface Component {
		String getSource();
		Type getType();
	}
}
